VARIABLE SpecialFlag 8320$ CONSTANT DoCol
: CFA> LATEST @ BEGIN ?DUP WHILE 2DUP SWAP U< IF NIP EXIT THEN
@ REPEAT DROP 0 ; : NextWord 2+ ; : WRAP? DUP XY? DROP + XMAX 
> IF CR THEN ; : SetFlag? IF TRUE SpecialFlag ! THEN ;
: IsLIT? DUP @ ['] LIT = SetFlag? ; : IsBRANCH? DUP @ ['] 
BRANCH = SetFlag? ; : Is0BRANCH? DUP @ ['] 0BRANCH = SetFlag? ;
: GetLITERAL DUP NextWord @ . NextWord ;
: DoSpecialCases 0 SpecialFlag ! IsLIT? IsBRANCH? Is0BRANCH?
DROP SpecialFlag @ IF GetLITERAL THEN ; : ShowWord DUP DUP @ 
CFA> 2+ DUP @ 300F$ AND SWAP 2+ SWAP WRAP? TYPE SPACE
DoSpecialCases ;
: ForthWord? ." ADDRESS: " DUP $. DUP 2+ @ 8000$ AND 0<> IF 
." (IMMEDIATE) " THEN >CFA DUP @ DoCol = IF ." FORTH" CR 
." DOCOL " NextWord TRUE ELSE ." ASSEMBLY" CR FALSE THEN ;
: NotExit? DUP @ 832E$ <> ;

: GoSee ForthWord? IF BEGIN NotExit? WHILE ShowWord NextWord
REPEAT ." EXIT" CR DROP ELSE DROP THEN ;
: SEE WORD FIND ?DUP IF CR GoSee ELSE ." not found" CR THEN ;
